// 在上下文中传递 logger 。

package main

import (
	"context"

	"gitee.com/baihr/iam/pkg/log"
)

func main() {
	defer log.Flush()

	// 返回附加键值对的 logger 。
	logger := log.WithValues("contextName", "main")

	logger.Info("start call printString function")
	// 将 logger 加入到上下文中。
	ctx := logger.WithContext(context.Background())
	printString(ctx, "test")
}

func printString(ctx context.Context, str string) {
	// 不使用 main 的上下文。
	log.Info(str)

	// 使用 main 上下文中的 logger 。
	ctxLogger := log.FromContext(ctx)
	ctxLogger.Info(str)
}

// output:
// 2024-01-19 13:38:33.276 INFO    context/main.go:17      start call printString function {"contextName": "main"}
// 2024-01-19 13:38:33.276 INFO    context/main.go:25      test
// 2024-01-19 13:38:33.276 INFO    context/main.go:29      test    {"contextName": "main"}
